From 55d68726160a3106ad428266bdad624547e53469 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 4 Sep 2015 02:08:59 -0400 Subject: [PATCH] file system: Add an api to get a GIcon Using prerendered surfaces is not working well when it comes to state changes, so make the GIcon available. --- gtk/gtkfilesystem.c | 31 +++++++++++++++++-------------- gtk/gtkfilesystem.h | 1 + 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/gtk/gtkfilesystem.c b/gtk/gtkfilesystem.c index 17213e15c7..421166325f 100644 --- a/gtk/gtkfilesystem.c +++ b/gtk/gtkfilesystem.c @@ -770,29 +770,32 @@ _gtk_file_system_volume_render_icon (GtkFileSystemVolume *volume, return surface; } +GIcon * +_gtk_file_system_volume_get_symbolic_icon (GtkFileSystemVolume *volume) +{ + if (IS_ROOT_VOLUME (volume)) + return g_themed_icon_new ("drive-harddisk-symbolic"); + else if (G_IS_DRIVE (volume)) + return g_drive_get_symbolic_icon (G_DRIVE (volume)); + else if (G_IS_VOLUME (volume)) + return g_volume_get_symbolic_icon (G_VOLUME (volume)); + else if (G_IS_MOUNT (volume)) + return g_mount_get_symbolic_icon (G_MOUNT (volume)); + else + return NULL; +} + cairo_surface_t * _gtk_file_system_volume_render_symbolic_icon (GtkFileSystemVolume *volume, GtkWidget *widget, gint icon_size, GError **error) { - GIcon *icon = NULL; + GIcon *icon; cairo_surface_t *surface; - if (IS_ROOT_VOLUME (volume)) - icon = g_themed_icon_new ("drive-harddisk-symbolic"); - else if (G_IS_DRIVE (volume)) - icon = g_drive_get_symbolic_icon (G_DRIVE (volume)); - else if (G_IS_VOLUME (volume)) - icon = g_volume_get_symbolic_icon (G_VOLUME (volume)); - else if (G_IS_MOUNT (volume)) - icon = g_mount_get_symbolic_icon (G_MOUNT (volume)); - - if (!icon) - return NULL; - + icon = _gtk_file_system_volume_get_symbolic_icon (volume); surface = get_surface_from_gicon (icon, widget, icon_size, error); - g_object_unref (icon); return surface; diff --git a/gtk/gtkfilesystem.h b/gtk/gtkfilesystem.h index 70bd3eaaf1..be198850a2 100644 --- a/gtk/gtkfilesystem.h +++ b/gtk/gtkfilesystem.h @@ -93,6 +93,7 @@ GtkFileSystemVolume * _gtk_file_system_get_volume_for_file (GtkFileSystem gchar * _gtk_file_system_volume_get_display_name (GtkFileSystemVolume *volume); gboolean _gtk_file_system_volume_is_mounted (GtkFileSystemVolume *volume); GFile * _gtk_file_system_volume_get_root (GtkFileSystemVolume *volume); +GIcon * _gtk_file_system_volume_get_symbolic_icon (GtkFileSystemVolume *volume); cairo_surface_t * _gtk_file_system_volume_render_icon (GtkFileSystemVolume *volume, GtkWidget *widget, gint icon_size, -- 2.30.2